package cn.itcast.itcaststore.serive;

import cn.itcast.itcaststore.domain.PageBean;
import cn.itcast.itcaststore.domain.Products;
import cn.itcast.itcaststore.exception.AddProductException;
import cn.itcast.itcaststore.exception.FindProductByIdException;
import cn.itcast.itcaststore.exception.ListProductException;

import java.util.List;

public interface ProductService {
    /**
     * 下载销售榜单
     * @param year
     * @param month
     * @return
     */
    List<Object[]> download(String year, String month);

    /**
     * 获取当前分页Bean数据
     * @param currentPage 当前页码
     * @param currentCount  每页显示条数
     * @param category  查找的分类
     * @return
     */
    PageBean findProductByPage(int currentPage, int currentCount, String category);


    /**
     * 通过id查找商品
     * @param id
     * @return
     * @throws FindProductByIdException
     */
    Products findProductById(String id) throws FindProductByIdException;


    /**
     * 多条件查询
     *
     * @param id       :商品id
     * @param name     ：商品名称
     * @param category ：商品类别
     * @param minprice ：最小价格
     * @param maxprice ：最大价格
     * @return
     * @throws ListProductException
     */
    List<Products> findProductByManyCondition(String id, String name, String category, String minprice, String maxprice) throws ListProductException;

    /**
     * 根据菜单搜索框内的文字模糊查询图书
     *
     * @param currentPage  当前页码
     * @param currentCount 每页显示条数
     * @param searchfield  搜索的图书名
     * @return PageBean
     */
    PageBean findBookByName(int currentPage, int currentCount, String searchfield);

    /**
     * 获取本周热卖的商品
     * @return
     */
    List<Object[]> getWeekHotProduct();

    /**
     * 查找所有商品信息
     *
     * @return
     * @throws ListProductException
     */
    List<Products> listAll() throws ListProductException;

    /**
     * 添加商品
     * @param p
     */
    void addProduct(Products p) throws AddProductException;

    /**
     * 修改商品信息
     * @param p
     */
    void editProduct(Products p);

    /**
     * 后台系统，根据id删除商品信息
     * @param id
     */
    void deleteProduct(String id);
}



